JavaScript Let

ES6 let কীওয়ার্ড শিখুন

JavaScript Let

letকীওয়ার্ডটি ES6 (2015) এ চালু করা হয়েছিল।

Block Scope: letসঙ্গে ঘোষিত ভেরিয়েবল ব্লক সুযোগ আছে
Declare Before Use: letসাথে ঘোষিত ভেরিয়েবল অবশ্যই ব্যবহারের আগে ঘোষণা করতে হবে
Cannot be Redeclared: letসাথে ঘোষিত ভেরিয়েবল একই সুযোগে পুনরায় ঘোষণা করা যাবে না

Block Scope

ES6 (2015) এর আগে, জাভাস্ক্রিপ্টের ব্লক স্কোপ ছিল না।

জাভাস্ক্রিপ্টের শুধুমাত্র গ্লোবাল স্কোপ এবং ফাংশন স্কোপ ছিল।

ES6 দুটি নতুন জাভাস্ক্রিপ্ট কীওয়ার্ড প্রবর্তন করেছে:letএবংconst.

এই দুটি কীওয়ার্ড জাভাস্ক্রিপ্টে ব্লক স্কোপ প্রদান করে:

Example: Block Scope with let

{
  let x = 2;
}
// x can NOT be used here (outside the block)

Global Scope vs Block Scope

var - No Block Scope

{
  var x = 2;
}
// x CAN be used here (outside the block)

varসাথে ঘোষিত ভেরিয়েবলের সর্বদা বিশ্বব্যাপী সুযোগ থাকে।

let - Has Block Scope

{
  let x = 2;
}
// x can NOT be used here (outside the block)

letসঙ্গে ঘোষিত ভেরিয়েবল ব্লক সুযোগ আছে.

Cannot be Redeclared

letসাথে সংজ্ঞায়িত ভেরিয়েবল পুনরায় ঘোষণা করা যাবে না।

আপনি ঘটনাক্রমেletসাথে ঘোষিত একটি পরিবর্তনশীল পুনরায় ঘোষণা করা যাবে না।

Example: Cannot Redeclare let

let x = "John Doe";
let x = 0; // ❌ Error: Identifier 'x' has already been declared

Example: Can Redeclare var

var x = "John Doe";
var x = 0; // ✅ Allowed

Redeclaring Variables

varকীওয়ার্ড ব্যবহার করে একটি ভেরিয়েবল পুনরায় ঘোষণা করলে সমস্যা হতে পারে।

Example: Problem with var redeclaration

var x = 10;
// Here x is 10

{
  var x = 2;
  // Here x is 2
}

// Here x is 2 (unexpected!)

⚠️var সমস্যা:

একটি ব্লকের ভিতরে একটি ভেরিয়েবল পুনরায় ঘোষণা করা ব্লকের বাইরের পরিবর্তনশীলটিকে পুনরায় ঘোষণা করে।

letকীওয়ার্ড ব্যবহার করে একটি ভেরিয়েবল পুনরায় ঘোষণা করা এই সমস্যার সমাধান করে।

Example: Solution with let

let x = 10;
// Here x is 10

{
  let x = 2;
  // Here x is 2
}

// Here x is 10 (as expected!)

Difference Between var, let and const

Feature var let const
Scope No Block Scope Block Scope Block Scope
Redeclare Yes No No
Reassign Yes Yes No
Hoisted Yes No No
Binds this Yes No No

What is Good?

letএবংconstব্লক সুযোগ রয়েছে
letএবংconstপুনরায় ঘোষণা করা যাবে না
letএবংconstব্যবহারের আগে অবহিত করা আবশ্যক
letএবংconst thisসাথে আবদ্ধ হয় না
letএবংconstউত্তোলন করা হয় না

What is Not Good?

varঘোষণা করার প্রয়োজন নেই (ডিফল্ট বিশ্বব্যাপী)
varউত্তোলন করা হয়েছে (বিজ্ঞপ্তির আগে ব্যবহার করা যেতে পারে)
var thisসাথে আবদ্ধ হয়

🏆সর্বোত্তম অনুশীলন:

আধুনিক জাভাস্ক্রিপ্ট প্রোগ্রামিং, সবসময়varএর পরিবর্তেletবাconstএটি ব্যবহার করুন ত্রুটি প্রতিরোধ করতে সাহায্য করে।

Browser Support

letএবংconstইন্টারনেট এক্সপ্লোরার 11 বা পূর্ববর্তী সংস্করণে কীওয়ার্ড সমর্থিত নয়।

Browser Version Release Date
Chrome 49 Mar, 2016
Edge 12 Jul, 2015
Firefox 36 Jan, 2015
Safari 11 Sep, 2017
Opera 36 Mar, 2016

Redeclaring Rules

varএকটি জাভাস্ক্রিপ্ট ভেরিয়েবলের সাথে পুনঃঘোষণা একটি প্রোগ্রামের যেকোনো জায়গায় অনুমোদিত:

Example: Allowed with var

var x = 2;   // Now x is 2
var x = 3;   // Now x is 3 (redeclared)

letএছাড়াও, একই মডিউলে একটি পরিবর্তনশীল পুনরায় ঘোষণা করা অনুমোদিত নয়:

Example: Not Allowed with let

let x = 2;   // Allowed
let x = 3;   // ❌ Not allowed

{
  let x = 2;   // Allowed
  let x = 3;   // ❌ Not allowed
}

{
  let x = 2;   // Allowed
  var x = 3;   // ❌ Not allowed
}

অন্য ব্লকেletএকটি পরিবর্তনশীল পুনঃঘোষণা এর সাথে অনুমোদিত:

Example: Allowed in Different Blocks

let x = 2;   // Allowed

{
  let x = 3;   // Allowed (different block)
}

{
  let x = 4;   // Allowed (different block)
}

Let Hoisting

varএর সাথে সংজ্ঞায়িত ভেরিয়েবলগুলি উপরে উত্তোলন করা হয়েছে এবং যে কোনো সময় আরম্ভ করা যেতে পারে।

Example: var Hoisting

carName = "Volvo";
var carName; // ✅ Allowed (hoisted)

📚শেখা:

Hoisting সম্পর্কে আরও জানতে, JavaScript Hoisting অধ্যায় পড়ুন।

letএর সাথে সংজ্ঞায়িত ভেরিয়েবলগুলি ব্লকের উপরে উত্তোলন করা হয়, তবে আরম্ভ করা হয় না।

Example: let Hoisting (Temporal Dead Zone)

carName = "Saab"; // ❌ ReferenceError
let carName = "Volvo";

Temporal Dead Zone:

letভেরিয়েবলগুলি উত্তোলন করা হয়, কিন্তু "টেম্পোরাল ডেড জোন"-এ থাকে। ঘোষণার আগে এগুলি ব্যবহার করার চেষ্টা করা একটি রেফারেন্স ত্রুটির কারণ হবে৷

Exercise

letকীওয়ার্ডের সঠিক ব্যবহার কী?

let x = 5;
✓ ঠিক আছে! এইletকীওয়ার্ডের সঠিক সিনট্যাক্স।letতারপর পরিবর্তনশীল নাম, তারপর =, তারপর মান
x let 5;
✗ ভুল! পরিবর্তনশীল নামের আগে জাভাস্ক্রিপ্ট সিনট্যাক্সletকিওয়ার্ড আসা উচিত
let 5 into x;
✗ ভুল! জাভাস্ক্রিপ্টে পরিবর্তনশীল ঘোষণার জন্য 'into' ব্যবহার করা হয় না। সঠিক সিনট্যাক্সlet x = 5;
x = 5(let);
✗ ভুল!letশুধুমাত্র পরিবর্তনশীল ঘোষণার জন্য ব্যবহৃত হয়, অ্যাসাইনমেন্ট নয়। সঠিক সিনট্যাক্সlet x = 5;